
package DB.dao;

import DB.dto.*;
import DB.exceptions.*;
import DB.jdbc.AbstractDAO;

public interface DoctorDao
{
	/** 
	 * Inserts a new row in the DOCTOR table.
	 */
	public int insert(DoctorDto dto) throws DoctorDaoException;

	/** 
	 * Updates a single row in the DOCTOR table.
	 */
	public void update(int pk, DoctorDto dto) throws DoctorDaoException;

	/** 
	 * Deletes a single row in the DOCTOR table.
	 */
	public void delete(int pk) throws DoctorDaoException;

	/** 
	 * Returns the rows from the DOCTOR table that matches the specified primary-key value.
	 */
	public DoctorDto findByPrimaryKey(int pk) throws DoctorDaoException;

	/**
	 * Returns all rows from the DOCTOR table that match the criteria ''.
	 */
	public DoctorDto[] findAll() throws DoctorDaoException;

	/** 
	 * Returns all rows from the DOCTOR table that match the criteria 'ID_DEPARTMENT = :idDepartment'.
	 */
	public DoctorDto[] findByDepartment(int idDepartment) throws DoctorDaoException;

	/** 
	 * Returns all rows from the DOCTOR table that match the criteria 'ID_DOCTOR = :idDoctor'.
	 */
	public DoctorDto[] findByPerson(int idDoctor) throws DoctorDaoException;

	/** 
	 * Returns all rows from the DOCTOR table that match the criteria 'ID_DOCTOR = :idDoctor'.
	 */
	public DoctorDto[] findWhereIdDoctorEquals(int idDoctor) throws DoctorDaoException;

	/** 
	 * Returns all rows from the DOCTOR table that match the criteria 'ID_DEPARTMENT = :idDepartment'.
	 */
	public DoctorDto[] findWhereIdDepartmentEquals(int idDepartment) throws DoctorDaoException;

	/** 
	 * Returns all rows from the DOCTOR table that match the criteria 'SPECIALITY = :speciality'.
	 */
	public DoctorDto[] findWhereSpecialityEquals(String speciality) throws DoctorDaoException;

	/** 
	 * Returns all rows from the DOCTOR table that match the criteria 'EXP = :exp'.
	 */
	public DoctorDto[] findWhereExpEquals(int exp) throws DoctorDaoException;

	/** 
	 * Sets the value of maxRows
	 */
	public void setMaxRows(int maxRows);

	/** 
	 * Gets the value of maxRows
	 */
	public int getMaxRows();

	/** 
	 * Returns all rows from the DOCTOR table that match the specified arbitrary SQL statement
	 */
	public DoctorDto[] findByDynamicSelect(String sql, Object[] sqlParams) throws DoctorDaoException;

	/** 
	 * Returns all rows from the DOCTOR table that match the specified arbitrary SQL statement
	 */
	public DoctorDto[] findByDynamicWhere(String sql, Object[] sqlParams) throws DoctorDaoException;

}
